Guido van Rossumの話
こんな本を読んでいる
https://images-na.ssl-images-amazon.com/images/I/51vqwb33ZnL._SX383_BO1,204,203,200_.jpg
邦題「言語設計者たちが考えること」
出版日: 2009/4/6
10年前だ
様々なプログラミング言語の開発者のインタビューが載っている本
古い言語が多い
次ページ参考
文字数がめっちゃ多い
この本の目次
1章 C++
2章 Python
3章 APL
4章 Forth
5章 BASIC
6章 AWK
7章 Lua
8章 Haskell
9章 ML
10章 SQL
11章 Objective-C
12章 Java
13章 C#
14章 UML
15章 Perl
16章 PostScript
17章 Eiffel
18章 Ruby
Pythonはどんな言語か
ぐいど・ゔぁんろっさむ
1991年に誕生
名前の由来はイギリスのコメディ番組『空飛ぶモンティ・パイソン』
可読性の良い文法で学習コストも低い
ライブラリが豊富
科学計算とかAIとかスクレイピングとかサーバーとか
2020年からの必修で高校ではPython
基本情報技術者試験の午後問題もPythonに
COBOLを廃止
言語の開発
言語の実装は変更しづらい
上のレイヤに影響を与えてしまう
後方互換性についての問題など
言語の設計はアジャイル開発ができない
言語定義中のバグは、人が増えるまで見つからない
変更しづらいので時すでに遅し感
設計が大事
言語に新機能を追加するということ
誰かが「この機能入れてくれ」って言ってきた時
1. 「こんなふうに2,3行書けば同じことができるよ」
2. 「こんなふうにすれば、外部モジュールとして利用できるよ」
言語本体に実装しない
3. 標準ライブラリとして入れてみるか
Pythonのみで無理なら、C言語による拡張機能として頑張る
機能の追加は保守的に
とりあえず「No」と答える
相手は、諦めるか、言語の変更なしに自分で解決するか
あるドメインでのみ良い機能でも、それだけで追加すべきでない
コミュニティとして見るPythonの特徴
PEP
Python Enhancement Proposal
スタイルを統一し読みやすいコードを書こうって感じのガイド
当時はこういうのがちゃんと決まってるOSSが少なかった
Zen of Python
1つのやり方にきまる
誰が書いても同じものになる
1つの目的を果たすために、色々な種類の手段があるのが嫌だった
C++やJSはどこかの機関が管理している
超大変
ABCは教育向けの言語
受け継いだもの
任意精度の有理数を扱える
リストのリストを作れる
indentでグループ化
C言語の中括弧どこに置くか問題という不毛な議論を解消できる
中括弧を用いると些細なバグが潜みやすい
etc.
開発時のペルソナ
Unix環境やそれに類似する環境を用いて仕事をするプログラマ
PythonはC言語とシェルプログラミングの架け橋となる」というスローガンを用いてた
アプリケーション内に組み込んで使う人が現れるまで、そういう用途で使われると思ってなかった
中高等教育、大学、独学でプログラミングの原理について学ぶのに適している
ってなったのは偶然
動的言語のよさ
解決策への道筋がまだ明確でない時に最も有益になる
大量のコードを記述することなく実験を繰り返すことができる
前回のアプローチに縛られることなく、前の実験で学んだことを活かせる
Jupyter notebook的な
言語の思想に乗っかって使う
Q. 「言語を格闘する」というのはどういう意味ですか?
Guido van Rossum.icon「それは大抵の場合、プログラマが他の言語でやっていたことを習慣的に続けようとするために起こります」
例えば、Pythonのselfをなんとかしてなくしたい、という要望とか
どうしても「self」という4文字を書きたくない人がいるらしい
Goにgenerics入れろ議論とかも同じなのかな
いろんな実装がある
普通の(?)のPython
JVM上
Pythonのサブセット言語
PyPyのサブプロジェクト
RPython実装
Rust実装
.NET Framework, mono上で動作
Pythonの仮想マシンを構成しているコンポーネントのごく一部を別なアプローチで置き換えたPythonの派生物
色々な実装があってうれしいこと
言語に複数の実装があることは、言語の仕様の曖昧さを除去する上でとても有益だった
例えば特殊なケースに遭遇したり、テストをしたり、疑問を投げかけたりしてくれる
おわり
紹介されている言語が古いのでセカンドシーズン出て欲しい